讓遠端伺服器( ex: GCE)在本機修改 push 上 github 後,可以自動 git pull 更新。
本篇實作皆參考官方文件
專案開 public,clone 若用
https
在遠端伺服器設 git config --global user.email "xxxx@example.com"
, git config --global user.name "xxxxxx"
ssh
在遠端伺服器產生 ssh-keygen -t rsa -b 4096 -C "xxxx@example.com"
,再將 public key 設定在專案下的 Deploy Keys 中。 參考
若還沒使用過 Action 可以先參考這篇
* 測試用自動產生的 ssh key 連線: `ssh -i ~/.ssh/google_compute_engine xxxxxxx@xx.xx.xxx.xx` 確定 key 可以用
gpg --symmetric --cipher-algo AES256 ~/.ssh/google_compute_engine
mv ~/.ssh/google_compute_engine.gpg ~/xxx/xxx/google_compute_engine.gpg
git push
上 Github主要跑四個項目:
ssh參數可參考這裏
name: CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Run a one-line script
run: echo Hello, world!
- name: decrypt
run: |
mkdir $HOME/secrets
gpg --quiet --batch --yes --decrypt --passphrase="$PASSPHRASE" \
--output $HOME/secrets/key google_compute_engine.gpg
env:
PASSPHRASE: ${{ secrets.PASSPHRASE }}
- name: test key
run: ls $HOME/secrets/key
- name: chmod
run: chmod 600 $HOME/secrets/key
- name: ssh
run: ssh -o StrictHostKeyChecking=no -i $HOME/secrets/key sarahcheng@35.229.180.75 "cd action_ci/;git pull"
# cd action_ci 要改成自己的 guthub 專案名稱
Job: 由 Step 所組成,每個 Job 皆在新的執行個體 (instance) 中執行。Job 可以同時執行,亦可取決於先前的 Job 狀態依序執行。
git push
上 GithubOK
感謝我大 TTN 協助!!